package com.xuecheng.learning.service;

import com.xuecheng.commons.model.dto.LearningProgressDto;
import com.xuecheng.commons.model.vo.CourseRecordVo;
import com.xuecheng.commons.model.vo.ResourceVo;
import com.xuecheng.commons.model.vo.ResponseResult;
import com.xuecheng.learning.domain.CourseRecord;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xuecheng.web.exceptions.BusinessException;

/**
 * <p>
 * 选课记录 服务类
 * </p>
 *
 * @author 七安
 * @since 2022-09-30
 */
public interface CourseRecordService extends IService<CourseRecord> {

    /**
     * 根据课程发布id查询当前登陆学生的所学课程信息
     *
     * @param coursePubId 课程发布id
     * @return 结果
     */
    ResponseResult<CourseRecordVo> findMyCourseRec(Long coursePubId) throws BusinessException;

    /**
     * 保存或更新学生的选课记录
     * @param coursePubId 课程发布id
     * @param userId  用户id
     * @return 结果
     */
    ResponseResult saveOrUpdateCourseRec(Long coursePubId, Long userId) throws BusinessException;

    /**
     * 获取播放url
     * @param coursePubId 课程发布id
     * @param mediaId     媒资id
     * @param teachplanId  教学计划id
     * @return url
     */
    ResponseResult<ResourceVo> getResourceUrl(Long coursePubId, Long mediaId, Long teachplanId) throws BusinessException;

    /**
     * 生成/更新课程发布的学习进度
     * @param learningProgressDto 发布的id，课程大纲id,课程大纲名称
     * @return 结果
     */
    ResponseResult saveProgress(LearningProgressDto learningProgressDto) throws BusinessException;

}
